//package com.mofei.mall04_fileupload.controller.upload;
//
//import com.itextpdf.text.*;
//import com.itextpdf.text.pdf.PdfWriter;
//import com.mofei.mall04_fileupload.common.config.PathConfig;
//import com.mofei.mall04_fileupload.common.util.BeanUrl;
//import org.apache.pdfbox.util.PDFMergerUtility;
//import org.springframework.beans.factory.annotation.Value;
//import org.springframework.util.CollectionUtils;
//import org.springframework.web.bind.annotation.*;
//import org.springframework.web.multipart.MultipartFile;
//
//import javax.imageio.ImageIO;
//import javax.servlet.http.HttpServletRequest;
//import java.awt.color.ColorSpace;
//import java.awt.image.BufferedImage;
//import java.awt.image.ColorConvertOp;
//import java.io.ByteArrayOutputStream;
//import java.io.File;
//import java.io.FileOutputStream;
//import java.io.IOException;
//import java.util.List;
//import java.util.*;
//
//@RestController
//@RequestMapping(value = "/file/attachment")
//@CrossOrigin
//public class FileUploadController {
//    @Value("${ATTACHMENT:}")
//    private String path;
//
//    /**
//     * @param files 多文件
//     * @param type  文件类型
//     * @throws Exception
//     */
//    @RequestMapping(value = "/upload", method = RequestMethod.POST)
//    public Map<String, Object> batch(@RequestParam(value = "file", required = false) MultipartFile[] files, String type, HttpServletRequest request) {
//
//        if ((type == null) || ("".equals(type))) {
//            type = "OTHER";
//        }
//
//        System.out.println("图片上传-" + type);
//
//        Map<String, Object> j = new HashMap<>();
//        if ((files == null) || (CollectionUtils.isEmpty(Arrays.asList(files)))) {
//            j.put("codeEnum", "FAIL");
//            j.put("code", 0);
//            j.put("data", null);
//            j.put("msg", "缺少图片文件");
//            j.put("success", Boolean.FALSE);
//            return j;
//        }
//
//        FileType fileTypeToo;
//        try {
//            fileTypeToo = Enum.valueOf(FileType.class, type);
//        } catch (Exception e) {
//            fileTypeToo = null;
//        }
//
//        path = path == null || "".equals(path.replaceAll("\\s", "").replaceAll("\n", ""))
//                ? PathConfig.attPaht
//                : path.replaceAll("\\s", "").replaceAll("\n", "");
//
//        String[] paths = FileType.getPath(fileTypeToo, files.length, type, path);
//
//        String baseUrl = BeanUrl.getRequestUrl(request).split("/file/")[0];
//
//        List<String> urls = new ArrayList<>();
//        for (int i = 0; i < paths.length; i++) {
//            String path = paths[i];
//            MultipartFile multipartFile = files[i];
//            // 获取文件的后缀
//            String suffix;
//            try {
//                suffix = multipartFile.getOriginalFilename().substring(multipartFile.getOriginalFilename().lastIndexOf("."));
//            } catch (Exception e) {
//                suffix = "";
//            }
//            String fileName = FileType.getName() + suffix;
//
//            File saveFile = new File(path + File.separator + fileName);
//            try {
//                multipartFile.transferTo(saveFile);
//            } catch (IOException e) {
//                e.printStackTrace();
//            }
//
//            //urls.add(baseUrl + "/ATTACHMENT/" + type + "/" + saveFile.getParentFile().getName() + "/" + saveFile.getName());
//            /* 修改上传返回*/
//            urls.add("/images/ATTACHMENT/" + type + "/" + saveFile.getParentFile().getName() + "/" + saveFile.getName());
//
//        }
//
//        j.put("data", urls);
//
//        j.put("codeEnum", "SUCCESS");
//        j.put("code", 1);
//        j.put("msg", "成功");
//        j.put("success", Boolean.TRUE);
//
//        return j;
//
//    }
//
//    /**
//     *
//     *
//     * */
//    @RequestMapping(value = "/uploadToPdf", method = RequestMethod.POST)
//    public Map<String, Object> batch(
//            @RequestParam(value = "file", required = false) MultipartFile[] files,
//            String type, HttpServletRequest request) {
//        if ((type == null) || ("".equals(type))) {
//            type = "OTHER";
//        }
//
//        System.out.println("图片上传-" + type);
//
//        Map<String, Object> j = new HashMap<>();
//
//
//
//
//
//        j.put("data", urls);
//
//        j.put("codeEnum", "SUCCESS");
//        j.put("code", 1);
//        j.put("msg", "成功");
//        j.put("success", Boolean.TRUE);
//        return j;
//    }
//
//    /*------------------------------------------------------*/
//    /**
//     * @Author Ragty
//     * @Description 将图片转换为PDF
//     * @Date 15:27 2019/3/4
//     * @return
//     **/
//    public static String Img2PDF(String imagePath,BufferedImage img,String descfolder) throws Exception{
//        String pdfPath = "";
//        try {
//            //图片操作
//            Image image = null;
//            File file = new File(descfolder);
//
//            if (!file.exists()){
//                file.mkdirs();
//            }
//
//            pdfPath = descfolder +"/"+System.currentTimeMillis()+".pdf";
//            String type = imagePath.substring(imagePath.lastIndexOf(".")+1);
//            Document doc = new Document(null, 0, 0, 0, 0);
//
//            //更换图片图层
//            BufferedImage bufferedImage = new BufferedImage(img.getWidth(), img.getHeight(),BufferedImage.TYPE_3BYTE_BGR);
//            bufferedImage.getGraphics().drawImage(img, 0,0, img.getWidth(), img.getHeight(), null);
//            bufferedImage=new ColorConvertOp(ColorSpace.getInstance(ColorSpace.CS_GRAY),null).filter (bufferedImage,null);
//
//            //图片流处理
//            doc.setPageSize(new Rectangle(bufferedImage.getWidth(), bufferedImage.getHeight()));
//            System.out.println(bufferedImage.getWidth()+"()()()()()"+bufferedImage.getHeight());
//            ByteArrayOutputStream out = new ByteArrayOutputStream();
//            boolean flag = ImageIO.write(bufferedImage, type, out);
//            byte[] b = out.toByteArray();
//            image = Image.getInstance(b);
//
//            //写入PDF
//            System.out.println("写入PDf:" + pdfPath);
//            FileOutputStream fos = new FileOutputStream(pdfPath);
//            PdfWriter.getInstance(doc, fos);
//            doc.open();
//            doc.add(image);
//            doc.close();
//
//        } catch (IOException e) {
//            e.printStackTrace();
//        } catch (BadElementException e) {
//            e.printStackTrace();
//        } catch (DocumentException e) {
//            e.printStackTrace();
//        }
//        return pdfPath;
//    }
//
//
//
//
//    /**
//     * @Author Ragty
//     * @Description 获取文件夹下的PDF
//     * @Date 17:33 2019/3/7
//     * @return
//     **/
//    private static String[] getFiles(String folder) throws IOException {
//        File _folder = new File(folder);
//        String[] filesInFolder;
//
//        if (_folder.isDirectory()) {
//            filesInFolder = _folder.list();
//            return filesInFolder;
//        } else {
//            throw new IOException("Path is not a directory");
//        }
//    }
//
//
//
//
//    /**
//     * @Author Ragty
//     * @Description 合成PDF
//     * @Date 17:25 2019/3/7
//     * @return
//     **/
//    public static void mergePDF(String[] files,String desfolder,String mergeFileName ) throws Exception{
//
//        PDFMergerUtility mergePdf = new PDFMergerUtility();
//
//        for (String file :files) {
//            if (file.toLowerCase().endsWith("pdf"))
//                mergePdf.addSource(file);
//        }
//
//        mergePdf.setDestinationFileName(desfolder+"/"+mergeFileName);
//        mergePdf.mergeDocuments();
//        System.out.println("merge over");
//
//    }
//
//
//
//
//    public static void main(String[] args) throws Exception{
//
//        ImgUtil imageUtil = new ImgUtil();
//        String[] files = new String[11];
//        files[0] = "D:/test2/2019021910311346.jpg";
//        files[1] = "D:/test2/2019021816284226.jpg";
//        files[2] = "D:/test2/2019021816284244.png";
//        files[3] = "D:/test2/2019021816284299.jpg";
//        files[4] = "D:/test2/2019021816284346.png";
//        files[5] = "D:/test2/2019021816285533.png";
//        files[6] = "D:/test2/2019021816285546.jpg";
//        files[7] = "D:/test2/2019021816285553.jpg";
//        files[8] = "D:/test2/2019021816285640.png";
//        files[9] = "D:/test2/2019021910305527.pdf";
//        files[10] = "D:/test2/201902191030445.pdf";
//
//        String folder = "D:/test2";
//        String mergeFileName = "final.pdf";
//
//        for (int i=0;i<files.length;i++) {
//            String file = files[i];
//
//            if (file.toLowerCase().endsWith(".png")
//                    || file.toLowerCase().endsWith(".jpg")
//                    || file.toLowerCase().endsWith(".gif")
//                    || file.toLowerCase().endsWith(".jpeg")
//                    || file.toLowerCase().endsWith(".gif")) {
//
//                BufferedImage bi = imageUtil.rotateImage(file);
//                if (bi==null)
//                    continue;
//
//                String pdffile = Img2PDF(file,bi,folder);
//                files[i] = pdffile;
//            }
//        }
//        mergePDF(files,folder,mergeFileName);
//
//    }
//}
